unit ControleMesaFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls, ValEdit, ComCtrls, StdCtrls, MainFr, DataRecord;

type

  { TControleMesaMainFrame }

  TControleMesaMainFrame = class(TMainFrame)
    dataLabel: TLabel;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    usuario: TLabel;
    MesaImageList: TImageList;
    MesaListView: TListView;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    procedure MesaListViewClick(Sender: TObject);
    procedure MesaListViewSelectItem(Sender: TObject; Item: TListItem;
      Selected: boolean);
    procedure SetDataRecord(Data: TDataRecord); override;
    procedure BuscaMesas();
    procedure Inicia();

  private
    { private declarations }
  public
    { public declarations }
    IndexItem: integer;
  end;

implementation

uses
  MesaDM, Initializator, VendaAbertaDM, MainFm;

{ TControleMesaMainFrame }

procedure TControleMesaMainFrame.SetDataRecord(Data: TDataRecord);
begin
  // Verifica se o frame possui módulo de dados
  if (MainDataModule <> nil) then begin
    // Atribui um DataRecord ao DataSet
    MainDataModule.SetDataRecord(Data);
  end;
end;

procedure TControleMesaMainFrame.BuscaMesas();
var
  item: TListItem;
  I, imagem,x: integer;
  tipo: string;

begin
  I:=0;
  //Primeiramente limpa os itens que estão no list View
  MesaListView.Items.Clear();
  //Pegar as mesas e inserir no List view
  with MesaData.MesaZQuery do begin
   RecNo:=0;
   for I:=1  to RecordCount do begin
      RecNo := I;
        //Adicionar as mesas dentro do list view de acordo com o banco
      item := MesaListView.Items.Add;
      if FieldByName('status').AsString = 'L' then begin
        // tipo := 'LIVRE';
        imagem := 1;
      end else begin
        // tipo := 'OCUPADA';
        imagem := 0;
      end;
      item.Caption := FieldByName('desc_mesa').AsString;
      //!Verificar como pegar a string apenas mesa
      //! item.Caption := FieldByName('desc_mesa').AsString + #13 + #10 + tipo;
      item.ImageIndex := imagem;
    end;
 end;
end;

procedure TControleMesaMainFrame.Inicia();
var
  Verifica: string;
begin
  Verifica := MesaData.VerificaCaixaAberto();
  if Verifica = '' then begin
    if MessageDlg('Confirmação', 'Caixa não está Aberto! Deseja Abrir?',
      mtConfirmation, mbYesNo, 0) = mrYes then begin
      TheControl.ShowFrame(TMainFrame(CaixaInicioRecordFrame));
    end else begin
      TheControl.BackFrame();
    end;
  end else begin
    BuscaMesas();
    dataLabel.Caption := MesaData.BuscaData();
    usuario.Caption := MesaData.BuscaUsuario(MainForm.Usuario);
  end;
end;

procedure TControleMesaMainFrame.MesaListViewSelectItem(Sender: TObject;
  Item: TListItem; Selected: boolean);
begin
  IndexItem := Item.Index;
end;

procedure TControleMesaMainFrame.MesaListViewClick(Sender: TObject);
var
  Verifica: boolean;
begin
  // Se a imagem for 1 Livre - verde
  if MesaListView.Items.Item[IndexItem].ImageIndex = 1 then begin
    TheControl.ShowFrame(TMainFrame(VendaAbertaTransRecordFrame));
  end else begin
    TheControl.ShowFrame(TMainFrame(VendaAbertaTransRecordFrame));
    Verifica := VendaAbertaData.BuscaVendasControleMesa(
      MesaListView.Items.Item[IndexItem].Caption);
    VendaAbertaTransRecordFrame.ControlaBotoes();
  end;
end;

initialization
  {$I controlemesafr.lrs}

end.

